{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "view-in-github"
   },
   "source": [
    "<a href=\"https://colab.research.google.com/github/jermwatt/machine_learning_refined/blob/main/notes/2_Zero_order_methods/2_2_Zero.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "bDjThHwdYuAU"
   },
   "source": [
    "## Chapter 2: Zero order methods"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This notebook contains interactive content from an early draft of the university textbook <a href=\"https://github.com/neonwatty/machine-learning-refined/tree/main\">\n",
    "Machine Learning Refined (2nd edition) </a>.\n",
    "\n",
    "The final draft significantly expands on this content and is available for <a href=\"https://github.com/neonwatty/machine-learning-refined/tree/main/chapter_pdfs\"> download as a PDF here</a>."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Ndm3f2RBYuAX"
   },
   "source": [
    "# 2.2 The Zero-Order Optimality Condition"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "aDvOYNkjYuAY"
   },
   "source": [
    "The mathematical problem of the smallest point(s) of a function - referred to as a function's *global minimum* (one point) or *global minima* (many) - is a centuries old pursuit and has applications throughout the sciences and engineering.  In this Section we describe most basic mathematical definition of a function's minima - called the *zero-order condition*. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "gSwbvu2YYuAY",
    "outputId": "2e6a4221-e5dc-4dce-9d97-bfdf39fb111d"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Requirement already satisfied: github-clone in /Users/jeremywatt/Desktop/machine-learning-refined/venv/lib/python3.10/site-packages (1.2.0)\n",
      "Requirement already satisfied: requests>=2.20.0 in /Users/jeremywatt/Desktop/machine-learning-refined/venv/lib/python3.10/site-packages (from github-clone) (2.32.3)\n",
      "Requirement already satisfied: docopt>=0.6.2 in /Users/jeremywatt/Desktop/machine-learning-refined/venv/lib/python3.10/site-packages (from github-clone) (0.6.2)\n",
      "Requirement already satisfied: charset-normalizer<4,>=2 in /Users/jeremywatt/Desktop/machine-learning-refined/venv/lib/python3.10/site-packages (from requests>=2.20.0->github-clone) (3.4.0)\n",
      "Requirement already satisfied: idna<4,>=2.5 in /Users/jeremywatt/Desktop/machine-learning-refined/venv/lib/python3.10/site-packages (from requests>=2.20.0->github-clone) (3.10)\n",
      "Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/jeremywatt/Desktop/machine-learning-refined/venv/lib/python3.10/site-packages (from requests>=2.20.0->github-clone) (2.2.3)\n",
      "Requirement already satisfied: certifi>=2017.4.17 in /Users/jeremywatt/Desktop/machine-learning-refined/venv/lib/python3.10/site-packages (from requests>=2.20.0->github-clone) (2024.12.14)\n",
      "\n",
      "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m24.2\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.3.1\u001b[0m\n",
      "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n",
      "Cloning into 'chapter_2_library'...\n",
      "done.\n"
     ]
    }
   ],
   "source": [
    "# install github clone - allows for easy cloning of subdirectories\n",
    "!pip install github-clone\n",
    "from pathlib import Path \n",
    "\n",
    "# clone library subdirectory \n",
    "if not Path('chapter_2_library').is_dir():\n",
    "    !ghclone https://github.com/neonwatty/machine-learning-refined-notes-assets/tree/main/notes/2_Zero_order_methods/chapter_2_library\n",
    "else:\n",
    "    print('chapter_2_library already cloned!')\n",
    "\n",
    "# append path for local library, data, and image import\n",
    "import sys\n",
    "sys.path.append('./chapter_2_library')\n",
    "\n",
    "# import section helper\n",
    "import section_2_2_helpers\n",
    "\n",
    "# standard imports\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# import autograd-wrapped numpy\n",
    "import autograd.numpy as np\n",
    "\n",
    "# this is needed to compensate for matplotlib notebook's tendancy to blow up images when plotted inline\n",
    "%matplotlib inline\n",
    "from matplotlib import rcParams\n",
    "rcParams['figure.autolayout'] = True\n",
    "\n",
    "%load_ext autoreload\n",
    "%autoreload 2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "mdV_-VUSYuAa"
   },
   "source": [
    "## The zero order definitions"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "9W1Z8qJNYuAa"
   },
   "source": [
    "In many areas of science and engineering one is interested in finding the smallest points - or the global minima - of a particular function.  For a function $g(\\mathbf{w})$ taking in a general $N$ dimensional input $\\mathbf{w}$ this problem is formally phrased as \n",
    "\n",
    "\\begin{equation}\n",
    "\\underset{\\mathbf{w}}{\\mbox{minimize}}\\,\\,\\,\\,g\\left(\\mathbf{w}\\right)\n",
    "\\end{equation}\n",
    "\n",
    "This says formally 'look over every possible input $\\mathbf{w}$ and find the one that gives the smallest value of $g(\\mathbf{w})$'."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "8kB9o5viYuAa"
   },
   "source": [
    "When a function takes in only one or two inputs we can attempt to identify its minima visually by plotting it over a large swath of its input space.  However this idea completely fails when a function takes in three or more inputs - since obviously we can no longer effectively visualize it.  However because we are such visual creatures it always helps to draw pictures to ease the translation from intuition to mathematical definition.  \n",
    "So lets visually examine a few simple examples.  In each case keep in mind how you would describe a minimum point - in plain English.  After each picture we will then codify this intuitive understanding - forming our first formal definition of minimum points."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "vmAPkv-8YuAa"
   },
   "source": [
    "#### <span style=\"color:#a50e3e;\">Example 1: </span> Global minima of a quadratic"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "lPhHQZ_tYuAa"
   },
   "source": [
    "Below we plot the simple quadratic\n",
    "\n",
    "\\begin{equation}\n",
    "g(w) = w^2\n",
    "\\end{equation}\n",
    "\n",
    "over a short region of its input space.  Examining the left panel below, what can we say defines the smallest value(s) of the function here?  Certainly - to state the obvious - that it is smaller than any other point on the function."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 225
    },
    "id": "0Q_nBYgcYuAb",
    "outputId": "c9af09cc-f49b-4e4e-eee4-dcdc9fa30756"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 600x300 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# specify function\n",
    "func = lambda w: w**2\n",
    "\n",
    "# use custom plotter to display function\n",
    "section_2_2_helpers.show_stationary_1func(func=func)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "YuDAK7GTYuAc"
   },
   "source": [
    "More specifically the smallest value - the global minimum of this function - seemingly occurs close to $w^{\\star} = 0$ (we mark this point $(0,g(0))$ in the right panel with a green dot). \n",
    "\n",
    "Formally then to state mathematically that a point $w^{\\star}$ gives the smallest point on the function, that it is smaller than any other point on the function, is to say \n",
    "\n",
    "\\begin{equation}\n",
    "g(w^{\\star}) \\leq g(w) \\,\\,\\,\\text{for all $w$}.\n",
    "\\end{equation}\n",
    "\n",
    "This direct translation of what we know to be intuitively true into mathematics is called the *zero-order definition of a global minimum point*."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "iUZ9VJF3YuAc"
   },
   "source": [
    "#### <span style=\"color:#a50e3e;\">Example 2: </span> Global maxima of a quadratic"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "F5elSWSkYuAc"
   },
   "source": [
    "Remember what happens if we multiply the quadratic function in the previous example by $-1$, as plotted below.  The function flips upside down - now its global minima lie at $w^{\\star} = \\pm \\infty$.  Now the point $w^{\\star} = 0$ that used to be a *global minimum* is a *global maximum* - i.e., the largest point on the function (and is marked in green in the right panel below).  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 225
    },
    "id": "nro40b3RYuAd",
    "outputId": "9c47db6b-f01a-43e3-b734-afa33df590cf"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 600x300 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# specify function\n",
    "func = lambda w: -w**2\n",
    "\n",
    "# use custom plotter to display function\n",
    "section_2_2_helpers.show_stationary_1func(func=func)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "dzKwWXalYuAd"
   },
   "source": [
    "How do we formally define a *global maximum*?  Just like the global minimum in the previous example - it is the point that is larger than any other on the function i.e., \n",
    "\n",
    "\\begin{equation}\n",
    "g(w^{\\star}) \\geq g(w) \\,\\,\\,\\text{for all $w$}.\n",
    "\\end{equation}\n",
    "\n",
    "This direct translation of what we know to be intuitively true into mathematics is called the *zero-order definition of a global maximum point*."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "DKrjrATGYuAd"
   },
   "source": [
    "These concepts of *minima* and *maxima* of a function are always related to each via multiplication by $-1$.  That is, any point that is a minima of a function $g$ is a maxima of the function $-g$, and vice-versa.  \n",
    "\n",
    "To express our pursuit of a global *maxima* of a function we write\n",
    "\n",
    "\\begin{equation}\n",
    "\\underset{\\mathbf{w}}{\\mbox{maximize}}\\,\\,\\,\\,g\\left(\\mathbf{w}\\right).\n",
    "\\end{equation}\n",
    "\n",
    "But since minima and maxima are so related, we can always express this in terms of our $\\mbox{minimize}$ notation as\n",
    "\n",
    "\\begin{equation}\n",
    "\\underset{\\mathbf{w}}{\\mbox{maximize}}\\,\\,\\,\\,g\\left(\\mathbf{w}\\right) = \n",
    "-\\underset{\\mathbf{w}}{\\mbox{minimize}}\\,\\,\\,\\,g\\left(\\mathbf{w}\\right).\n",
    "\\end{equation}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "JFAF9BLuYuAd"
   },
   "source": [
    "#### <span style=\"color:#a50e3e;\">Example 3:</span>  Global minima/maxima of a sinusoid"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "MVWW71GLYuAd"
   },
   "source": [
    "Let us look at the sinusoid function\n",
    "\n",
    "\\begin{equation}\n",
    "g(w) = \\text{sin}(2w)\n",
    "\\end{equation}\n",
    "\n",
    "plotted by the next Python cell, looking to visually identify both minima and maxima.  Here we can clearly see that - over the range we have plotted the function - that there are two global minima and two global maxima (marked by green dots in the right panel).  We can imagine as well of course that there are further minima and maxima (here one exists at every $4k+3$ multiple of $\\frac{\\pi}{2}$ for integer $k$'s).  So this is just an example where - technically speaking - the function has an infinite number of global minima and maxima."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 225
    },
    "id": "Y93BkbiUYuAe",
    "outputId": "58aacf0a-7634-4146-efa9-b4b9b4004bba"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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v39Q9nug70pKShSn06kAUIqKivwywHbm7rvvZr575ZVXhrzmfvnLX7LPPProo5qdm6bnLMBbb73FLo577rlnyM/89a9/ZZ/53ve+Z7CF5rJt2zb2t3/nO98Z8jPvv/8++8zq1asNttBc9uzZw/72W265ZcjPfPjhh+wzt956q2G2yXhvy2hzsHz++efsupg3b96wn3vttddsPwU+kB/96EfMJ88///ywn1uyZAn73GeffWacgYLS2dmpxMXFKQAUl8s15EOwoijKqVOnmN8WLFig2flpes4CvPnmm+z1rbcO7PLlY8WKFYiKigIAvPXWW5ZtVjgUvH9uueWWIT9zww03sCm6d999F729vYbYJgJvvfUWe/2Nb3xjyM8UFxezJpB///vfqZM6AQB4++232es77rhj2M+tWLECMTExAHzXm92n6BRFYfddREQEbrvttmE/+61vfYu9/utf/6q3acLzwQcfoKOjA4Av3qmlJwOZMmUKpk+fDgD4+OOPUVFRYZiNgEEtB4jRoygK/vGPfwDwbQlxww03DPm5+Ph4fPnLXwYA1NXV4dixY4bZaDZbt24FAERGRmLFihVDfiYqKgo33XQTAF9Tw08//dQw+8xmy5YtAACn04mvfvWrQ34mLCyMvdfV1UVbihAA/B9IhhPcABAXF4evfOUrAICLFy9iz549epsmNEePHkVlZSUAYMmSJSO2qbj11lvZhrOvvfaaIfaJzDvvvMNej3TNAf5Cnn84NAISTYJy5swZVuR27bXXsmzSUKhbQgDAhx9+qLttIlBeXs66oy9cuJAVBw7FsmX9Oz1+8MEHutsmAg0NDWyj2jlz5ozYBI4X5Dt27NDdNkJs6urq8MknnwAAZsyYMagYdyB8NuXdd9/V1TbR4TN0Vwr86enprEfY2bNnUV5erqNlYuP1eploio6O9huzh2LlypXs9bZt23S1bSAkmgRFbb4HYNgsk8qSJUvYa7uIJv7vXLp06Yif5d+3i3927tzJXo/GPySaCP4a+NrXvnbFz994441sVabdrx81+w0AN9988xU/zz/wqjMLduTo0aOor68H4HvIjY2NHfHz06ZNQ2ZmJgDfWGfkBvYkmgSFH3yupLqnTp3K6lJ27dqFvr4+XW0TAd4/VxKVBQUFGDduHABg7969ht5gZjEaUZmVlYUpU6YA8O1x2NLSoqtthNiM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",
      "text/plain": [
       "<Figure size 600x300 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# specify function\n",
    "func = lambda w: np.sin(3*w)\n",
    "\n",
    "# use custom plotter to display function\n",
    "section_2_2_helpers.show_stationary_1func(func=func)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "ghvjqHdzYuAe"
   },
   "source": [
    "#### <span style=\"color:#a50e3e;\">Example 4:</span>  Minima and maxima of the sum of a sinusoid and a quadratic"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "NN9JlcMPYuAe"
   },
   "source": [
    "Lets look at a weighted sum of the previous two examples, the function \n",
    "\n",
    "\\begin{equation}\n",
    "g(w) = \\text{sin}(3w) + 0.1w^2\n",
    "\\end{equation}\n",
    "\n",
    "over a short region of its input space.  Examining the left panel below, what can we say defines the smallest value(s) of the function here?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 225
    },
    "id": "SlHUvsJiYuAe",
    "outputId": "3628b0ce-2d8e-4ea9-a936-40cfede38dce"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 600x300 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# specify function\n",
    "func = lambda w: np.sin(3*w) + 0.1*w**2\n",
    "\n",
    "# use custom plotter to display function\n",
    "section_2_2_helpers.show_stationary_1func(func=func)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "LDZfvJiUYuAf"
   },
   "source": [
    "Here we have a global minimum around $w^{\\star} = -0.5$ and a global maximum around $w^{\\star} = 2.7$.  We also have minima and maxima that are *locally optimal* - for example the point around $w^{\\star} = 0.8$ is a local maximum.  Likewise the point near $w^{\\star} = 1.5$ is a *local minimum*  - since it is the smallest point on the function nearby.  We can formally say that the point $w^{\\star}$ is a local minimum of the function $g(w^{\\star})$ as\n",
    "\n",
    "\\begin{equation}\n",
    "g(w^{\\star}) \\leq g(w) \\,\\,\\,\\text{for all $w$ near $w^{\\star}$}\n",
    "\\end{equation}\n",
    "\n",
    "The statement $\\text{for all $w$ near $w^{\\star}$}$ is relative, and simply describes the fact that the point $w^{\\star}$ is smaller than its neighboring points.  This is the *zero-order definition of local minima*.  The same formal definition can be made for local maximum points as well, switching the $\\leq$ sign to $\\geq$, just as in the case of global minima/maxima."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "8WNZD3fqYuAf"
   },
   "source": [
    "##  The zero order condition for optimality"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "hvIQiJBCYuAf"
   },
   "source": [
    "From these examples we have seen how to formally define global minima/maxima as well as the local minima/maxima of functions we can visualize.  These formal definitions directly generalize to a function of any dimension - in general taking in $N$ inputs.  Packaged together these zero-order conditions are often referred to as *the zero-order condition for optimality*.\n",
    "\n",
    "> **The zero order condition for optimality:** A point $\\mathbf{w}^{\\star}$ is \n",
    "- a global minimum of $g(\\mathbf{w})$ if and only if $g(\\mathbf{w}^{\\star}) \\leq  g(\\mathbf{w}) \\,\\,\\,\\text{for all $\\mathbf{w}$}$  \n",
    "- a global maximum of $g(\\mathbf{w})$ if and only if $g(\\mathbf{w}^{\\star}) \\geq  g(\\mathbf{w}) \\,\\,\\,\\text{for all $\\mathbf{w}$}$ \n",
    "- a local minimum of $g(\\mathbf{w})$ if and only if $g(\\mathbf{w}^{\\star}) \\leq  g(\\mathbf{w}) \\,\\,\\,\\text{for all $\\mathbf{w}$ near $\\mathbf{w}^{\\star}$}$  \n",
    "- a local maximum of $g(\\mathbf{w})$ if and only if $g(\\mathbf{w}^{\\star}) \\geq  g(\\mathbf{w}) \\,\\,\\,\\text{for all $\\mathbf{w}$ near $\\mathbf{w}^{\\star}$}$  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Wma5DDBnYuAf"
   },
   "source": [
    "##  The zero order jargon, in context"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "HMhla9QuYuAg"
   },
   "source": [
    "Here we have seen zero-order definitions of various important points of a function.  Why are these called *zero-order* conditions?  Because each of their definitions involves only a function itself - and nothing else.  This bit of jargon - 'zero-order'- is commonly used when discussing a mathematical function in the context of calculus where we can have *first-order*, *second-order*, etc., derivatives e.g., a zero-order derivative of a function is just the function itself.  In the future we will see *higher order* definitions of optimal points e.g., *first-order* definitions that involve the first derivative of a function and *second-order* definitions involving a function's second derivative."
   ]
  }
 ],
 "metadata": {
  "colab": {
   "include_colab_link": true,
   "provenance": []
  },
  "kernelspec": {
   "display_name": "venv",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.15"
  },
  "toc": {
   "colors": {
    "hover_highlight": "#DAA520",
    "navigate_num": "#000000",
    "navigate_text": "#333333",
    "running_highlight": "#FF0000",
    "selected_highlight": "#FFD700",
    "sidebar_border": "#EEEEEE",
    "wrapper_background": "#FFFFFF"
   },
   "moveMenuLeft": true,
   "nav_menu": {
    "height": "103px",
    "width": "252px"
   },
   "navigate_menu": true,
   "number_sections": false,
   "sideBar": true,
   "threshold": 4,
   "toc_cell": false,
   "toc_section_display": "block",
   "toc_window_display": false,
   "widenNotebook": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
